s1_goto_dir() {
    cd "$1"
}

# 函数: 生成一个以$1的值命名的空文件，不改变当前目录
s2_touch_empty_file_with_given_name() {
    touch "$1"
}

# 函数: 创建目录结构
s3_make_directories() {
    mkdir -p projects/git
    mkdir projects/backup
}

# 函数: 在projects目录内创建6个文件
s4_create_6_files() {
    touch projects/linux1_centos projects/linux1_redhat projects/linux1_c_programming \
          projects/linux2_centos projects/linux2_redhat projects/linux2_c_programming
}

# 函数: 在projects/git目录内创建两个目录linux1, linux2
s5_make_directories_in_git() {
    mkdir projects/git/linux1 projects/git/linux2
}

# 函数: 将文件移动到相应的目录
s6_move_files_to_dir_1_or_2() {
    mv projects/linux1_* projects/git/linux1
    mv projects/linux2_* projects/git/linux2
}

# 函数: 创建tar包并压缩到backup目录
s7_create_package_and_compress() {
    tar -czvf projects/backup/git.tar.gz -C projects git
}

# 函数: 删除git目录
s8_delete_dir_git() {
    rm -rf projects/git
}

# 函数: 从tar.gz备份恢复git目录
s9_recover_from_git_tar_gz_backup() {
    tar -zxvf projects/backup/git.tar.gz -C projects
}

# 函数: 创建tar.bz2包并压缩到backup目录
s10_create_package_and_compress() {
    tar -jcvf projects/backup/git.tar.bz2 -C projects git
}

# 函数: 找出并排序所有创建的文件和目录
s11_find_and_sort_alphabetically_all_created_files_and_dirs() {
    find projects -type f -or -type d | sort
}

# 函数: 显示未来下一个15分钟的整数倍时间值
s12_get_next_15_minutes_boundary() {
    date -d @$(( ( $(date +%s) + 900 ) / 900 * 900 )) +"%Y-%m-%d_%H:%M:%S"
}

